home *** CD-ROM | disk | FTP | other *** search
/ Aminet 48 / Aminet 48 (2002)(GTI - Schatztruhe)[!][Apr 2002].iso / Aminet / dev / src / ggt.lha / ggT / zeiger_verwaltung.adb < prev    next >
Encoding:
Text File  |  2002-02-13  |  1.3 KB  |  40 lines

  1. -- Zeigerverwaltung
  2. -- Autor: Norman Walter
  3. -- Datum: 2.2.2002
  4.  
  5. -- Das Paketschema zeiger_verwaltung stellt dem Benutzer die
  6. -- Möglichkeit der "garbage collection" zur Verfügung.
  7. -- Es wird der zeiger_typ definiert, mit dem die Komponenten
  8. -- einfach verkettet werden. Das Paket enthält die Prozeduren
  9. -- ablegen und holen, um ein überflüssig gewordenes
  10. -- Listenelement an die Liste anzuhängen bzw. ein Listenelement
  11. -- aus der Liste zu entnehmen. Erst wenn die Liste leer ist,
  12. -- wird in holen ein neues Listenelement erzeugt.
  13.  
  14. package body zeiger_verwaltung is
  15.    listen_anfang : zeiger_typ := null;
  16.  
  17.    procedure ablegen (zeiger : in out zeiger_typ) is
  18.    begin
  19.       zeiger.nachfolger:= listen_anfang;
  20.       listen_anfang:= zeiger;
  21.       zeiger:= null;
  22.       exception
  23.          when constraint_error => null;
  24.               -- wird ausgelöst, wenn zeiger null war,
  25.               -- also ablegen mit einem unbelegten
  26.               -- Zeiger aufgerufen wurde.
  27.    end ablegen;
  28.  
  29.    procedure holen (zeiger : out zeiger_typ) is
  30.    begin
  31.       if listen_anfang = null
  32.          then zeiger:= new komponente_rahmen;
  33.          else zeiger:= listen_anfang;
  34.               listen_anfang:= listen_anfang.nachfolger;
  35.               zeiger.nachfolger:= null;
  36.          end if;
  37.    end holen;
  38.  
  39. end zeiger_verwaltung;
  40.